home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / glass / glass.lha / GLASS / contsens / errorenv.h < prev    next >
C/C++ Source or Header  |  1991-01-31  |  3KB  |  81 lines

  1.  
  2.  
  3. /*   Copyright (C) 1990 Riet Oolman
  4.  
  5. This file is part of GLASS.
  6.  
  7. GLASS is free software; you can redistribute it and/or modify
  8. it under the terms of the GNU General Public License as published by
  9. the Free Software Foundation; either version 1, or (at your option)
  10. any later version.
  11.  
  12. GLASS is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. GNU General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with GLASS; see the file COPYING.  If not, write to
  19. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  20.  
  21.  
  22. /* file: errorenv.h
  23.    author: H. Oolman
  24.    last modified: 13-7-1990
  25.    modifications: p2c translated, tmc access procs */
  26.  
  27. /* error messages (warning if iswarn), in which a name may occur are stored.
  28.    erval: expression with the erroneous type
  29.    They may become
  30.    invalid yet, so are not yet printed. It is assumed that 'UNKNOWN' types
  31.    for parts of expressions are not filled in !! (since these would have to be
  32.    changed back to) */
  33. extern Void error PP((long ernm, typcrec *tyfst, typcrec *tysnd,
  34.               symbol name, val erval, int iswarn));
  35.  
  36. /* for printing an origin without \n at the end: */
  37. extern Void myprint_orig();
  38.  
  39. /* prints error messages concerning type errors
  40.    unparsval: unparses valptr's; differs for full and kernel check
  41.    errorlist: errors to be printed */
  42. extern Void printerrors PP((_PROCEDURE unparsval, errorrec *errorlist));
  43.  
  44. /* replace name nm with extended name nm_ext */
  45. extern Void addext PP((symbol nm, long ext));
  46.  
  47. /* test if the first elt. in env. is a marker */
  48. #define ismark(e) ((e)->name0->length == 0)
  49.  
  50. /* mark point where piece of curenv added in front may be chopped off,
  51.    by element with empty name (assumption: no normal name has length 0) */
  52. extern Void mark_ PP((envrec **curenv));
  53.  
  54. /* remove leading part of curenv upto and including first marker. Check
  55.    for unknown names first though, and if 'uniq' replace the name with its
  56.    uniquely extended version */
  57. extern Void release_ PP((envrec **curenv, int uniq));
  58.  
  59. /* name-type environment with nothing in it */
  60. #define emptyenv NULL
  61.  
  62. /* add name n with type t in curenv;
  63.    generate unique string (number) as extension;
  64. */
  65. extern Void update PP((envrec **curenv, symbol n, typcrec *t));
  66.  
  67. /* deliver type associated with name s in curenv.
  68.    s afterwards points at name in curenv, if found.
  69.    s not present <=> lookup=nil */
  70. extern typcrec *lookup PP((envrec *curenv, symbol *s));
  71.  
  72. /* is s in list slist? */
  73. extern boolean isin PP((symbol s, symbol slist));
  74.  
  75. /* add s to the list slist */
  76. extern Void addcopy PP((symbol s, symbol *slist));
  77.  
  78. /* s  is not allowed already to occur in slist, otherwise added */
  79. extern Void addunequal PP((symbol s, symbol *slist));
  80.  
  81.